java如何格式化servlet响应以生成HTML中“accept”参数可接受的媒体类型?
我想了解对浏览器的响应是如何工作的。例如,jersey说它使用annotation@Products定义的最可接受的媒体类型响应请求:
@GET
@Produces({"application/xml", "application/json"})
public String doGetAsXmlOrJson() {
...
}
在上面的例子中,最可接受的类型是“application/xml”。好对于这种媒体类型,我将在Servlet中执行以下操作:
response.setContentType("application/xml");
PrintWriter out = response.getWriter();
out.println("<root><x>1</x></root>");
要点是:我需要根据媒体类型格式化响应,正如我在上一行中所做的那样
假设浏览器不支持“application/xml”,我想知道如何使用HttpServletResponse格式化第二个可接受的类型。在这种情况下,应该选择“application/json”
# 1 楼答案
除非客户机告诉您,否则您无法知道客户机支持哪种媒体类型。这通常是通过^{} header 完成的
所以如果客户端发送
您应该尝试生成
application/xml
格式的响应如果您不能生成这样的响应,那么应该使用带有适当主体的^{} 状态代码进行响应